package org.cagt.probability;

/**
 * Interface of resetable iterator. It means that by the calling of mehtod
 * reset() it can be restored to its starting state. However this iterator can
 * only by used to browse collection, not to remove elements from it.
 * 
 * @author konrad.szalkowski (at) gmail.com
 * 
 * @param <T>
 *            Type of elements browsed by the iterator.
 */
public interface ResetIterator<T> {
	/**
	 * Resets iterator to starting state.
	 */
	public void reset();

	/**
	 * True if iterator can proceed.
	 */
	public boolean hasNext();

	/**
	 * Next element of collection/sequence.
	 */
	public T next();
}
